Skill Development

ল্যাম্বডা এক্সপ্রেশন এবং লিঙ্ক (LINQ)

সি# এ ল্যাম্বডা এক্সপ্রেশন এবং লিঙ্ক (LINQ) প্রোগ্রামিংকে আরও সহজ, কার্যকর, এবং এক্সপ্রেশনভিত্তিক করে তোলে। ল্যাম্বডা এক্সপ্রেশন একটি সংক্ষিপ্ত সিনট্যাক্স, যা অ্যানোনিমাস মেথড তৈরি করতে ব্যবহৃত হয় এবং লিঙ্ক (Language-Integrated Query বা LINQ) ব্যবহার করে ডেটা সংগ্রহের উপর কোয়েরি চালাতে অনেক সহজ করে তোলে। নিচে এই দুটি বিষয়ে বিস্তারিত আলোচনা করা হলো।


ল্যাম্বডা এক্সপ্রেশন

ল্যাম্বডা এক্সপ্রেশন হলো একটি সংক্ষিপ্ত সিনট্যাক্স যা অনামী (anonymous) মেথড তৈরি করতে ব্যবহার করা হয়। এটি ডেলিগেটের সঙ্গে কাজ করে এবং LINQ কোয়েরিগুলোতে ব্যবহার করা হয়।

ল্যাম্বডা এক্সপ্রেশন সিনট্যাক্স

ল্যাম্বডা এক্সপ্রেশন => অপারেটর ব্যবহার করে লেখা হয়। বামদিকে প্যারামিটার এবং ডানদিকে এক্সপ্রেশন বা কার্যকরী কোড থাকে।

(parameters) => expression

উদাহরণ

using System;

public class Program
{
    public static void Main()
    {
        // ল্যাম্বডা এক্সপ্রেশন দিয়ে ডেলিগেট তৈরি
        Func<int, int> square = x => x * x;
        
        int result = square(5);
        Console.WriteLine(result); // Output: 25
    }
}

এখানে square নামে একটি ডেলিগেট ব্যবহার করা হয়েছে, যা একটি int প্যারামিটার গ্রহণ করে এবং একটি int রিটার্ন করে। x => x * x ল্যাম্বডা এক্সপ্রেশনটির মাধ্যমে square ডেলিগেটকে সেট করা হয়েছে, যা x * x ফলাফল প্রদান করে।

মল্টিপল প্যারামিটার সহ ল্যাম্বডা এক্সপ্রেশন

Func<int, int, int> add = (a, b) => a + b;
Console.WriteLine(add(5, 10)); // Output: 15

এখানে (a, b) => a + b ল্যাম্বডা এক্সপ্রেশনটি দুইটি প্যারামিটার গ্রহণ করে এবং তাদের যোগফল রিটার্ন করে।


LINQ (Language-Integrated Query)

LINQ হলো এমন একটি টুল যা ডেটা সংগ্রহের উপর কোয়েরি চালানোর জন্য তৈরি করা হয়েছে। এটি ডেটাবেস, XML, ক্লাসের অবজেক্ট, এবং অন্যান্য ডেটা স্ট্রাকচারের সাথে কাজ করতে ব্যবহার করা হয়। LINQ ব্যবহার করে সরাসরি ডেটার উপর কার্যকরী কোয়েরি চালানো যায়।

LINQ এর প্রধান সুবিধাগুলো হলো:

  1. ইন-প্রোগ্রাম কোয়েরি: সরাসরি ডেটার ওপর কোয়েরি চালানো যায়।
  2. স্ট্রংলি টাইপড: এতে টাইপ চেকিং এবং ইন্টেলিসেন্স ব্যবহার করা যায়।
  3. প্রতিস্থাপনযোগ্য: LINQ কে বিভিন্ন ধরনের ডেটা সোর্সে ব্যবহার করা যায়।

LINQ এর প্রধান দুই ধরনের সিনট্যাক্স

  1. কোয়েরি সিনট্যাক্স (Query Syntax): SQL এর মত দেখতে।
  2. মেথড সিনট্যাক্স (Method Syntax): ল্যাম্বডা এক্সপ্রেশনের ওপর ভিত্তি করে।

LINQ উদাহরণ

ধরা যাক আমাদের একটি int টাইপের তালিকা আছে এবং আমরা এই তালিকা থেকে নির্দিষ্ট কিছু সংখ্যাকে ফিল্টার করতে চাই।

১. কোয়েরি সিনট্যাক্স

using System;
using System.Linq;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

        // কোয়েরি সিনট্যাক্স ব্যবহার
        var evenNumbers = from num in numbers
                          where num % 2 == 0
                          select num;

        foreach (var number in evenNumbers)
        {
            Console.WriteLine(number); // Output: 2, 4, 6, 8
        }
    }
}

২. মেথড সিনট্যাক্স

using System;
using System.Linq;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

        // মেথড সিনট্যাক্স ব্যবহার
        var evenNumbers = numbers.Where(x => x % 2 == 0);

        foreach (var number in evenNumbers)
        {
            Console.WriteLine(number); // Output: 2, 4, 6, 8
        }
    }
}

আরো কিছু LINQ অপারেটর

LINQ এ অনেকগুলো অপারেটর আছে যেগুলো বিভিন্ন ডেটা ম্যানিপুলেশন কাজে ব্যবহৃত হয়। এর মধ্যে কয়েকটি গুরুত্বপূর্ণ অপারেটর হলো:

  • Where: নির্দিষ্ট শর্ত পূরণ করা ডেটা ফিল্টার করে।
  • Select: নির্দিষ্ট ডেটা নির্বাচন করে।
  • OrderBy/OrderByDescending: ক্রমানুসারে ডেটা সাজায়।
  • GroupBy: নির্দিষ্ট শর্ত অনুযায়ী ডেটা গ্রুপ করে।
  • Sum, Average, Count: বিভিন্ন গণনামূলক কাজ করে।

উদাহরণ: LINQ এর আরো অপারেটর ব্যবহার

using System;
using System.Linq;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

        // ফিল্টার করা
        var evenNumbers = numbers.Where(x => x % 2 == 0);

        // সংখ্যা গুনতে
        var count = numbers.Count();

        // সংখ্যা যোগ করতে
        var sum = numbers.Sum();

        Console.WriteLine("Even Numbers:");
        foreach (var num in evenNumbers)
        {
            Console.WriteLine(num); // Output: 2, 4, 6, 8
        }

        Console.WriteLine($"Total Count: {count}"); // Output: 9
        Console.WriteLine($"Sum: {sum}"); // Output: 45
    }
}

সংক্ষেপে

  • ল্যাম্বডা এক্সপ্রেশন: একটি সংক্ষিপ্ত সিনট্যাক্স, যা ডেলিগেট বা LINQ এর সাথে ব্যবহার করা হয়।
  • LINQ: ডেটা সংগ্রহের ওপর কার্যকরী কোয়েরি চালানোর জন্য একটি শক্তিশালী টুল, যা ডেটাকে আরও সহজে ফিল্টার, সাজানো, এবং গ্রুপ করা সম্ভব করে তোলে।

এইভাবে ল্যাম্বডা এক্সপ্রেশন এবং LINQ ব্যবহার করে সি# প্রোগ্রামে কার্যকরী ও সংক্ষিপ্ত কোড লেখা সম্ভব হয়।

 

 

Content added By

ল্যাম্বডা এক্সপ্রেশন কী এবং এর ব্যবহার

ল্যাম্বডা এক্সপ্রেশন সি#-এর একটি সংক্ষিপ্ত পদ্ধতি, যা ফাংশন বা মেথড লেখাকে সহজ এবং সংক্ষিপ্ত করে তোলে। এটি এনোনিমাস মেথডের মতোই কাজ করে, তবে এর সিনট্যাক্স আরও সহজ এবং স্পষ্ট। সাধারণত, ল্যাম্বডা এক্সপ্রেশন ডেলিগেট, LINQ, ইভেন্ট এবং ফাংশনাল প্রোগ্রামিং প্যাটার্নে ব্যবহৃত হয়।

ল্যাম্বডা এক্সপ্রেশন কীভাবে লেখা হয়?

ল্যাম্বডা এক্সপ্রেশন লেখার নিয়ম:

(parameters) => expression_or_statement_block;
  • parameters: এটি ইনপুট প্যারামিটার বা আর্গুমেন্ট যা এক্সপ্রেশনে প্রয়োজন।
  • =>: এটি ল্যাম্বডা অপারেটর যা প্যারামিটার এবং এক্সপ্রেশনের মাঝে থাকে।
  • expression_or_statement_block: এটি সেই এক্সপ্রেশন বা কোড ব্লক যা এক্সিকিউট হবে।

সহজ উদাহরণ

নিচে একটি সাধারণ ল্যাম্বডা এক্সপ্রেশন দেওয়া হয়েছে, যা দুটি সংখ্যার যোগফল বের করে:

Func<int, int, int> add = (a, b) => a + b;
Console.WriteLine(add(5, 3)); // Output: 8

এখানে, Func<int, int, int> ডেলিগেটটি ব্যবহার করা হয়েছে, যা দুটি int প্যারামিটার গ্রহণ করে এবং একটি int রিটার্ন করে। (a, b) => a + b অংশটি ল্যাম্বডা এক্সপ্রেশন, যেখানে a এবং b প্যারামিটার এবং a + b হচ্ছে আউটপুট।

ল্যাম্বডা এক্সপ্রেশন ব্যবহার কেন?

১. সোজা এবং সংক্ষিপ্ত কোড: ল্যাম্বডা এক্সপ্রেশন কোডকে সহজ এবং সংক্ষিপ্ত করে তোলে। ২. LINQ এ ব্যবহৃত হয়: LINQ (Language Integrated Query) এ ল্যাম্বডা এক্সপ্রেশন প্রায়শই ব্যবহৃত হয়। ৩. কাস্টমাইজড ফাংশন পারামিটার: এটি ফাংশন বা মেথডে কাস্টমাইজড ফাংশনালিটি যুক্ত করতে সাহায্য করে।

উদাহরণ ১: ল্যাম্বডা এক্সপ্রেশন এবং LINQ ব্যবহার

LINQ এ ল্যাম্বডা এক্সপ্রেশন অনেক বেশি ব্যবহৃত হয়। নিচে একটি উদাহরণ দেওয়া হলো যেখানে একটি সংখ্যার তালিকায় ফিল্টারিং করা হয়েছে।

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
    public static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

        // ল্যাম্বডা এক্সপ্রেশন ব্যবহার করে শুধুমাত্র জোড় সংখ্যা ফিল্টার করা
        var evenNumbers = numbers.Where(n => n % 2 == 0).ToList();

        Console.WriteLine("Even Numbers:");
        evenNumbers.ForEach(n => Console.WriteLine(n));
    }
}

এখানে, n => n % 2 == 0 ল্যাম্বডা এক্সপ্রেশন ব্যবহার করে numbers তালিকার মধ্যে জোড় সংখ্যা ফিল্টার করা হয়েছে।

উদাহরণ ২: Action এবং Predicate এর সাথে ল্যাম্বডা এক্সপ্রেশন

ল্যাম্বডা এক্সপ্রেশন Action এবং Predicate ডেলিগেটের সাথে সহজেই ব্যবহার করা যায়।

using System;

public class Program
{
    public static void Main()
    {
        // Action ব্যবহার করে ল্যাম্বডা এক্সপ্রেশন
        Action<string> greet = name => Console.WriteLine("Hello, " + name);
        greet("John"); // Output: Hello, John

        // Predicate ব্যবহার করে ল্যাম্বডা এক্সপ্রেশন
        Predicate<int> isEven = number => number % 2 == 0;
        Console.WriteLine(isEven(4)); // Output: True
    }
}

উপরের উদাহরণে,

  • Action<string> ব্যবহার করে একটি ল্যাম্বডা এক্সপ্রেশন তৈরি করা হয়েছে, যা একটি স্ট্রিং ইনপুট গ্রহণ করে এবং কনসোলে গ্রিটিং মেসেজ দেখায়।
  • Predicate<int> ব্যবহার করে ল্যাম্বডা এক্সপ্রেশন তৈরি করা হয়েছে, যা একটি সংখ্যা গ্রহণ করে এবং সেটি জোড় কি না তা যাচাই করে।

জটিল ল্যাম্বডা এক্সপ্রেশন (Statement Block)

ল্যাম্বডা এক্সপ্রেশন শুধুমাত্র একটি এক্সপ্রেশন নয়, বরং একটি স্টেটমেন্ট ব্লকও হতে পারে। একাধিক লাইন লিখতে {} ব্যবহার করতে হবে।

Func<int, int, int> multiply = (a, b) =>
{
    Console.WriteLine("Multiplying " + a + " and " + b);
    return a * b;
};

Console.WriteLine(multiply(5, 4)); // Output: Multiplying 5 and 4, Result: 20

এখানে ল্যাম্বডা এক্সপ্রেশন স্টেটমেন্ট ব্লক আকারে লেখা হয়েছে, যেখানে কনসোলে একটি মেসেজ প্রিন্ট করার পরে গুণফল রিটার্ন করা হচ্ছে।

সংক্ষেপে

ল্যাম্বডা এক্সপ্রেশন সি#-এ কোড লেখাকে সহজ, সংক্ষিপ্ত এবং ফাংশনাল করে তোলে। এটি LINQ এবং ডেলিগেটের সাথে ব্যবহারের জন্য গুরুত্বপূর্ণ। ল্যাম্বডা এক্সপ্রেশন ব্যবহার করে আপনি দ্রুত এবং দক্ষভাবে কোড লিখতে পারবেন, বিশেষ করে যেখানে ফাংশনাল প্রোগ্রামিং প্রয়োজন।

Content added By

LINQ পরিচিতি এবং এর প্রয়োগ

LINQ (Language-Integrated Query) পরিচিতি

LINQ (লিংক) সি# প্রোগ্রামিং ল্যাঙ্গুয়েজে ডেটা কোয়েরি চালানোর একটি শক্তিশালী টুল যা বিভিন্ন ডেটা সোর্সের (যেমন: অ্যারে, লিস্ট, ডেটাবেস, XML) উপর কাজ করে। LINQ এর মাধ্যমে আমরা ডেটাকে সরাসরি কোয়েরি করতে পারি, যেটা SQL এর মতো ডেটাবেস কিউরির মতই কাজ করে তবে সাধারণ ডেটাসেটের উপরেও প্রয়োগ করা যায়। LINQ ব্যবহারের ফলে কোড আরও সংক্ষিপ্ত ও পড়তে সহজ হয়।

LINQ দুটি ধরনের সিনট্যাক্স সরবরাহ করে:

  1. কোয়েরি সিনট্যাক্স (Query Syntax): SQL-এর মতো দেখতে।
  2. মেথড সিনট্যাক্স (Method Syntax): ল্যাম্বডা এক্সপ্রেশন ভিত্তিক।

LINQ এর ব্যবহার (প্রয়োগ)

LINQ ব্যবহারের মাধ্যমে আমরা বিভিন্ন অপারেশন চালাতে পারি, যেমন:

  • ফিল্টার করা (Where)
  • সাজানো (OrderBy, OrderByDescending)
  • নির্দিষ্ট ডেটা নির্বাচন করা (Select)
  • গ্রুপ করা (GroupBy)
  • সংখ্যা গণনা করা (Count)
  • যোগফল বা গড় নির্ণয় করা (Sum, Average)

১. LINQ কোয়েরি সিনট্যাক্স (Query Syntax)

using System;
using System.Linq;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

        // কোয়েরি সিনট্যাক্স ব্যবহার করে ফিল্টার করা
        var evenNumbers = from num in numbers
                          where num % 2 == 0
                          select num;

        Console.WriteLine("Even Numbers:");
        foreach (var number in evenNumbers)
        {
            Console.WriteLine(number); // Output: 2, 4, 6, 8
        }
    }
}

২. LINQ মেথড সিনট্যাক্স (Method Syntax)

using System;
using System.Linq;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

        // মেথড সিনট্যাক্স ব্যবহার করে ফিল্টার করা
        var evenNumbers = numbers.Where(x => x % 2 == 0);

        Console.WriteLine("Even Numbers:");
        foreach (var number in evenNumbers)
        {
            Console.WriteLine(number); // Output: 2, 4, 6, 8
        }
    }
}

LINQ এর কিছু সাধারণ অপারেশন

LINQ অনেকগুলো অপারেশন সরবরাহ করে যা ডেটা নিয়ে বিভিন্ন ধরনের কাজ করতে ব্যবহার করা হয়। নিচে LINQ এর কয়েকটি সাধারণ অপারেশন নিয়ে উদাহরণ দেওয়া হলো:

১. Where: নির্দিষ্ট শর্ত পূরণ করা ডেটা ফিল্টার করা

var evenNumbers = numbers.Where(x => x % 2 == 0);

২. Select: ডেটা সংগ্রহ থেকে নির্দিষ্ট ফিল্ড বা উপাদান নির্বাচন করা

List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
var nameLengths = names.Select(name => name.Length);

foreach (var length in nameLengths)
{
    Console.WriteLine(length); // Output: 5, 3, 7
}

৩. OrderBy এবং OrderByDescending: ডেটা ক্রমানুসারে সাজানো

var orderedNumbers = numbers.OrderBy(x => x);
var descendingNumbers = numbers.OrderByDescending(x => x);

৪. GroupBy: ডেটাকে নির্দিষ্ট শর্ত অনুযায়ী গ্রুপ করা

List<string> fruits = new List<string> { "Apple", "Banana", "Cherry", "Avocado", "Blueberry" };
var groupedFruits = fruits.GroupBy(fruit => fruit[0]);

foreach (var group in groupedFruits)
{
    Console.WriteLine("Fruits that start with: " + group.Key);
    foreach (var fruit in group)
    {
        Console.WriteLine(fruit);
    }
}

৫. Count, Sum, Average: ডেটা গণনা ও গাণিতিক অপারেশন

int count = numbers.Count();
int sum = numbers.Sum();
double average = numbers.Average();

Console.WriteLine($"Count: {count}, Sum: {sum}, Average: {average}");
// Output: Count: 9, Sum: 45, Average: 5

একটি পূর্ণ উদাহরণ যেখানে একাধিক LINQ অপারেশন ব্যবহার করা হয়েছে

using System;
using System.Linq;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        List<string> students = new List<string> { "Alice", "Bob", "Charlie", "Alex", "Brian" };

        // যেখানে নামের দৈর্ঘ্য ৪ বা তার বেশি, তাদের ফিল্টার করুন এবং সাজান
        var filteredStudents = students
                               .Where(s => s.Length >= 4)
                               .OrderBy(s => s)
                               .Select(s => s.ToUpper());

        Console.WriteLine("Filtered and Ordered Students:");
        foreach (var student in filteredStudents)
        {
            Console.WriteLine(student);
        }
    }
}

ব্যাখ্যা

  • প্রথমে আমরা Where অপারেটরের মাধ্যমে ফিল্টার করেছি যাদের নামের দৈর্ঘ্য ৪ বা তার বেশি।
  • তারপর OrderBy অপারেটর ব্যবহার করে নামগুলোকে ক্রমানুসারে সাজানো হয়েছে।
  • শেষে Select অপারেটরের মাধ্যমে প্রতিটি নামকে uppercase এ রূপান্তরিত করেছি।

সংক্ষেপে LINQ এর সুবিধা

  1. সংক্ষিপ্ত ও সহজ কোড: LINQ ব্যবহার করলে কোড আরো সংক্ষিপ্ত হয় এবং পড়তে সহজ হয়।
  2. ইন্টেলিসেন্স সহায়ক: স্ট্রংলি টাইপড হওয়ায় কম্পাইল টাইমে ত্রুটি শনাক্ত করা সহজ।
  3. মাল্টিপল ডেটা সোর্সে প্রযোজ্য: LINQ ডেটাবেস, XML, অবজেক্ট, এবং আরো বিভিন্ন ডেটাসেটের সাথে কাজ করতে পারে।
  4. ডেটা প্রক্রিয়াকরণ সহজ করে: LINQ এর মাধ্যমে সহজে ফিল্টার, সাজানো, গ্রুপিং, এবং গণনা করতে পারি।

LINQ ব্যবহার করে সি# এ ডেটা ম্যানিপুলেশনকে অনেক সহজ করা যায়। এটি ডেটাবেস কোয়েরির মতই কাজ করে, তাই ডেটা প্রসেসিং বা ডেটা বিশ্লেষণে LINQ অনেক গুরুত্বপূর্ণ।

Content added By

LINQ এর সিনট্যাক্স এবং উদাহরণ

LINQ (Language Integrated Query) হলো সি#-এ একটি শক্তিশালী টুল, যা বিভিন্ন ডেটা সোর্স থেকে সহজ এবং সংক্ষিপ্ত উপায়ে ডেটা রিটার্ন এবং ম্যানিপুলেট করতে সাহায্য করে। LINQ বিভিন্ন ধরনের ডেটা সোর্স, যেমন অ্যারে, লিস্ট, ডাটাবেস এবং XML থেকে ডেটা এক্সেস ও প্রসেস করতে ব্যবহৃত হয়।

LINQ-এর দুটি মূল সিনট্যাক্স রয়েছে:

  1. কোয়েরি সিনট্যাক্স: SQL এর মতো স্টাইল, যা সাধারণত LINQ টু অবজেক্টস এবং LINQ টু XML এ ব্যবহৃত হয়।
  2. মেথড সিনট্যাক্স: ল্যাম্বডা এক্সপ্রেশনের সাথে LINQ মেথড কল করে ডেটা প্রসেস করা হয়।

উদাহরণ সহ LINQ এর সিনট্যাক্স

১. কোয়েরি সিনট্যাক্স

কোয়েরি সিনট্যাক্স SQL-এর মতো দেখতে এবং সহজেই বুঝতে পারা যায়। এটি সাধারণত from, where, select এবং অন্যান্য কীওয়ার্ড ব্যবহার করে।

উদাহরণ: একটি ইনটিজার তালিকা থেকে জোড় সংখ্যাগুলি বের করা

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
    public static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

        // কোয়েরি সিনট্যাক্স ব্যবহার করে জোড় সংখ্যা ফিল্টার করা
        var evenNumbers = from num in numbers
                          where num % 2 == 0
                          select num;

        Console.WriteLine("Even Numbers:");
        foreach (var number in evenNumbers)
        {
            Console.WriteLine(number);
        }
    }
}

উপরের উদাহরণে:

  • from num in numbers: numbers তালিকা থেকে num নামে একটি ভেরিয়েবল নির্বাচিত করা হয়েছে।
  • where num % 2 == 0: যেখানে num জোড় সংখ্যা, সেই আইটেমগুলো ফিল্টার করা হচ্ছে।
  • select num: ফিল্টার করা সংখ্যাগুলো নির্বাচন করা হচ্ছে।

২. মেথড সিনট্যাক্স

মেথড সিনট্যাক্সে ল্যাম্বডা এক্সপ্রেশন ব্যবহার করে বিভিন্ন মেথড কল করা হয়। এটি অনেক ফ্লেক্সিবল এবং ফাংশনাল প্রোগ্রামিং স্টাইলের জন্য প্রযোজ্য।

উদাহরণ: একটি স্ট্রিং তালিকা থেকে নির্দিষ্ট দৈর্ঘ্যের স্ট্রিং খুঁজে বের করা

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
    public static void Main()
    {
        List<string> words = new List<string> { "apple", "banana", "cherry", "date", "fig", "grape" };

        // মেথড সিনট্যাক্স ব্যবহার করে ৫ অক্ষরের শব্দ ফিল্টার করা
        var fiveLetterWords = words.Where(word => word.Length == 5).ToList();

        Console.WriteLine("Words with 5 letters:");
        fiveLetterWords.ForEach(word => Console.WriteLine(word));
    }
}

এখানে:

  • words.Where(word => word.Length == 5): words তালিকার মধ্যে সেই শব্দগুলো ফিল্টার করা হয়েছে যেগুলোর দৈর্ঘ্য ৫।
  • .ToList(): ফিল্টারকৃত ফলাফলকে তালিকা আকারে কনভার্ট করা হয়েছে।

LINQ-এর কয়েকটি গুরুত্বপূর্ণ অপারেটর

LINQ-এ অনেক গুরুত্বপূর্ণ অপারেটর রয়েছে, যেগুলো ডেটা ফিল্টারিং, সাজানো, গ্রুপিং, এবং বিভিন্ন ধরনের জটিল কাজ করতে ব্যবহৃত হয়। নিচে কয়েকটি উল্লেখযোগ্য অপারেটর সহ উদাহরণ দেওয়া হলো:

১. Select: একটি সংগ্রহের প্রতিটি আইটেমের ওপর প্রক্রিয়াকরণ করে একটি নতুন সংগ্রহ তৈরি করতে।

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
var squares = numbers.Select(num => num * num).ToList(); // { 1, 4, 9, 16, 25 }

২. Where: ফিল্টার করার জন্য ব্যবহৃত হয়।

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumbers = numbers.Where(num => num % 2 == 0).ToList(); // { 2, 4 }

৩. OrderBy এবং OrderByDescending: ক্রম বা বিপরীত ক্রমে সাজানোর জন্য।

List<string> names = new List<string> { "John", "Anna", "Zara", "Michael" };
var sortedNames = names.OrderBy(name => name).ToList(); // Ascending order
var descendingNames = names.OrderByDescending(name => name).ToList(); // Descending order

৪. GroupBy: নির্দিষ্ট কী অনুযায়ী গ্রুপ করতে।

List<string> names = new List<string> { "John", "Jake", "Anna", "Zara" };
var groupedNames = names.GroupBy(name => name[0]); // Group by first letter
foreach (var group in groupedNames)
{
    Console.WriteLine("Group: " + group.Key);
    foreach (var name in group)
    {
        Console.WriteLine(name);
    }
}

৫. Sum, Count, Average, Min, Max: সংক্ষেপক ফাংশন।

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
int sum = numbers.Sum(); // 15
int count = numbers.Count(); // 5
double average = numbers.Average(); // 3
int min = numbers.Min(); // 1
int max = numbers.Max(); // 5

উদাহরণ: একাধিক LINQ অপারেটর ব্যবহার

নিচে একটি উদাহরণ দেওয়া হলো যেখানে একাধিক অপারেটর একসাথে ব্যবহৃত হয়েছে।

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
    public static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

        // জোড় সংখ্যা ফিল্টার করা, তারপর তা বর্গ করে এবং অবশেষে সাজানো
        var query = numbers
                    .Where(num => num % 2 == 0)
                    .Select(num => num * num)
                    .OrderByDescending(num => num)
                    .ToList();

        Console.WriteLine("Even squares in descending order:");
        query.ForEach(num => Console.WriteLine(num));
    }
}

এখানে:

  1. Where(num => num % 2 == 0): জোড় সংখ্যা ফিল্টার করা।
  2. Select(num => num * num): প্রতিটি সংখ্যার বর্গ বের করা।
  3. OrderByDescending(num => num): বর্গকৃত সংখ্যা ডেসেন্ডিং অর্ডারে সাজানো।

সংক্ষেপে

LINQ হলো সি#-এ ডেটা প্রসেসিং এবং কনডিশন-ভিত্তিক কুয়েরি চালানোর একটি সহজ এবং সংক্ষিপ্ত উপায়। কোয়েরি এবং মেথড সিনট্যাক্সের মাধ্যমে LINQ প্রোগ্রামিংকে আরও সহজ করে তোলে এবং ডেটা ম্যানিপুলেশনে খুব কার্যকর।

Content added By

আরও দেখুন...

Promotion